@VERSION = 0.029"Arial, 1, 10, 6, 16, 13, 14, 3, 0 cmdokPixelsok.bmpok.bmp RELEASE THISFORM, default buttonClass1<ўџџ‰…BўџџЦ…<ўџџHjшЃ/рџ‹Rўџџш5ЙпџfџEЦ‹Eќ‹Ш‰EќшSžпџ‰E commandbuttonШ‰…Rўџџш„пџ‹а‹Шш]xрџ‹Rўџџшgпџ‹Rўџџџ1шХcmdokџ…fўџџˆ<ўџџPшХпџƒФUМ<ўџџ‰…Bўџџjш 0рџfџEЦ‹Eќ(Courier New, 1, 11, 9, 17, 12, 11, 5, 0 vcrPixelsoleMmessQЊёЬ)ˆ-Nі#PшH0€@0s@ƒhШPЎplёHQ›@,4ЫБ‚є€@,QЂ- olecontrol)Ёщќ§џџЁo}‹‹‘Ќ3ЩшŠёџщу§џџU‹ьƒьSVW‹ё‹generic vcr buttonsClass6 containervcrЯўђџ ЖЖ6v%XmgќU$Iќєї§ћўUTHIS HELPCONTEXTIDClick,џџ13/)ЖDTop = 6 Left = 44 Height = 15 Width = 23 Name = "Datachecker1" vcr. Datachecker1іPROCEDURE Click IF TYPE("THISFORM.PARENT") = 'O' RELEASE THISFORMSET ELSE RELEASE THISFORM ENDIF ENDPROC PROCEDURE Error LPARAMETERS nError, cMethod, nLine DO CASE CASE nError = 1585 && Update conflict DO CASE CASE INLIST(CURSORGETPROP('Buffering'), 2,3) && Row Buffering FOR nField = 1 to FCOUNT(ALIAS()) cField = FIELD(nField) IF OLDVAL(cField) != CURVAL(cField) nChoice = MESSAGEBOX('Data in ' + cField + 'was changed by another user' + ; CR_LOC + 'Do you want to save your changes anyway?', 4+48+0, 'Data Conflict') IF nChoice = 6 && yes =TABLEUPDATE(.F., .T.) ELSE =TABLEREVERT(.F.) ENDIF ENDIF ENDFOR CASE INLIST(CURSORGETPROP('Buffering'), 4,5) nRec = GETNEXTMODIFIED(0) DO WHILE nRec > 0 FOR nField = 1 to FCOUNT(ALIAS()) cField = FIELD(nField) IF OLDVAL(cField) != CURVAL(cField) nChoice = MESSAGEBOX('Data in ' + cField + 'was changed by another user' + ; CR_LOC + 'Do you want to save your changes anyway?', 4+48+0, 'Data Conflict') IF nChoice = 6 && yes =TABLEUPDATE(.F., .T.) ELSE =TABLEREVERT(.F.) ENDIF ENDIF ENDFOR nRec = GETNEXTMODIFIED(nRec) ENDDO ENDCASE ENDCASE ENDPROC ‹rHHeight = 30 Width = 94 Caption = "OK" Default = .F. Name = "cmdok" и‰Eа;EЬхЧEќ‹Eа+Eм‰E№;EиŒН‹uм‹}№№ON commandbuttonf‹A ‹ььЌ‰Mјf=SVWwfИЗРJџ‰Eь‹С™ї}ьcustom..\solution\solution.vcx datacheckerВўђџ ™™ЄВ%@ .ќU/ ™єєїў#6ў ™єєїў ™єєїўUTHISPARENTBEFORERECORDPOINTERMOVEDENABLEDISABLEBUTTONSRECORDPOINTERMOVED.4їїїў™ќCїїїєєі§ўUNERRORCMETHODNLINETHISPARENTERRORClick,џџErrorБџџ1бRвб2ёС1†Ђю )™vcr.GBrings up the help file, searching for the HelpContextID of the controlPixelshelp.bmphelp.bmp1Class:PROCEDURE Click HELP ID This.HelpContextID ENDPROC SCaption = "\ј 8§ў„їќј§(ќї§љtўTїќїCј §ў…ў Bќї§ўUTCSTRING TNMAXLENGTHILNADD LNMAXTABSJ4їў%ќCй\їЅј§љ:ўTїќCїCй\їЅј\§ўў Bќї§ўUTCSTRINGдTєїќa§ўX%ќCCйWINDIR5й\SYSTEM32\MAPI32.DLL0 №%CCйWINDIR5й\SYSTEM\MAPI32.DLL0 §љРўS™ќCйGIt does not appear that you have MAPI installed. Mail could not be run.ъx§ўBќ-§ўў ™єєїўUTHIS LOGSESSIONOLEMSESSSIGNON.Џїїїў†ќCCEј0ъx§ўTєїќ-§ўUNERRORCMETHODNLINETHIS LOGSESSIONTєїќ-§ўUTHIS LOGSESSIONaddtabs,џџ strippathрџџsignon8џџError4џџInitџџ1Бђq‘q1A‘2qqСA‘2уƒ1qAв3ёсс2с18 Xи ѕ">!ЋР&)Ы container??šТ%tcWidth = 25 Height = 25 BorderWidth = 0 TabIndex = 1 BackColor = 192,192,192 Name = "mailbtn" Hљ;љŸў! ќCCћ Bu.logsession *addtabs *strippath *signon џџџџџџџџџџ commandbuttonџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ commandbuttonџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџcmdMailџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџmailbtn.џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџpTop = 0 Left = 0 Height = 25 Width = 25 Picture = smmail.bmp Caption = "" TabIndex = 1 Name = "cmdMail" џџџџџџџџ olecontrolџџ3вЙшлћџџщ2ўџџ3вЙ шЪћџџщ!ўџџЁРі|€8ўt  container, 0, 9, 5, 13, 11, 11, 2, 0 RVED1MIXўђџ ??%r%tц*’ќU@#%ќCйTHISFORM.PARENTbћO§љ*ў<їўљ9ў<їўўU THISFORMSETTHISFORMЊЏїїїў HљљЃў ќїљ1§љЃў Hљ;љŸў! ќCCћ Bufferingъ‰јј­§љRў„їќј§(ќCC.§љNўTїќCї/§ў%ќCїъ_Cїъ§љJў~TїќCћData in їћwas changed by another userїћ(Do you want to save your changes anyway?ј4ћ Data Conflictъx§ў%ќїј§љ4ў †ќC-aъ“§ўљFў †ќC-ъ”§ўўў…ў! ќCCћ Bufferingъ‰јј­§љŸўTїќCјъ’§ў+ќїј§љ›ў„їќј§(ќCC.§љ‡ўTїќCї/§ў%ќCїъ_Cїъ§љƒў~TїќCћData in їћwas changed by another userїћ(Do you want to save your changes anyway?ј4ћ Data Conflictъx§ў%ќїј§љmў †ќC-aъ“§ўљў †ќC-ъ”§ўўў…ўTїќCїъ’§ўўўўUNERRORCMETHODNLINENFIELDCFIELDNCHOICECR_LOCNRECClick,џџError‡џџ11qqA3ёб!бёqтБЁAAA!ёqтБЁAAAAAA2i…ы )?{Width = 104 Height = 24 BorderWidth = 1 BackColor = 192,192,192 skiptable = enabledisableoninit = .T. Name = "vcr" mailbtnOLEMAPixelsMETHODSM9..\solution\ole\smmail.bmpOPERTIESM1..\solution\ole\smmail.bmpJNAMEM)'MAPI button to send the current record.Class TIMESTAMPN 4mPLATFORMC container…Р„5­‹шРGуџЙ;С|‹С‹ Нј§џџ‹‘Р‹ШСщ‹2mailbtn‹ЮшeФфџjZWџѕ~PК)‹ЮшOФфџ_^У‰‘ќ‹‰РU‹ьь,OLEObject = C:\WINDOWS\SYSTEM\MSMAPI32.OCX џt5jWџі~ аЯрЁБс>ўџ ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџўџџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot EntryџџџџџџџџўЄаuЛOleObjectDataџџџџ%AccessObjSiteData&џџџџџџџџџџџџ\ChangedPropsџџџџџџџџџџџџўџџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ ,Ц кЙЈDESTхх\$8mgkgtgnnmnmninigthkgogggvmkhinjggnvm€ЏFkР ™їћПШПUјjQRWџі~jj Wџѕ~PjWџѕ~PWџіITop = -1000 Left = -1000 Height = 100 Width = 100 Name = "olemSess" ш›ГџџGвИхU9Д9ДьŒ=ВWП3і‹М$œL UŸ;ў„Pyб›ЗAю(сЌ$Јmailbtn.t jР QRё€l ‹ƒ‡Zd”ИЄŠЩ‹\‚F5P™pш-ЅНбФ ЗаHq™вolemSess,M€ СР§(p)T$4‰6пАЭbр4QeЅˆрЫqэrю Вrћ€jХХ olecontrol‹У_^[‹х]УV‹ёшWџџџ…Рuƒ|$џt ‹T$‹ЮшAџџџО…Р olecontrolE№3л‰]ќ‹EјjUќ‹0‹N шLФ…Рt#‹Eќ}иUиMш‹0ƒЦ ,OLEObject = C:\WINDOWS\SYSTEM\MSMAPI32.OCX ƒОИ~‹A$ аЯрЁБс>ўџ ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџўџџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot Entryџџџџџџџџ 5”аuЛOleObjectDataџџџџ)AccessObjSiteData&џџџџџџџџџџџџ\ChangedPropsџџџџџџџџџџџџўџџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЋ,Ц кЙЈDESTхх\$8mgkgtgnnmnmninigthkgogggvmkhinjggnvm€MќшиUд‹Eќ‹0‹NшCSуџ‹MјшOСЧEє9]єu—_^[‹х]УU‹ьƒь(ITop = -1000 Left = -1000 Height = 100 Width = 100 Name = "oleMmess" iо ИŒr§š"vЂ$НtтV…Р_"‹u(œ=Ќ=5‚]`’Yщ,л" mailbtn.twhрQ!1ѓЅё#„$Ё=-M ьQ"э2б­„c'з(:‹P‚-5н1›ўђџ ‚‚’№%ƒ)DЁќUXЏїїїў†ќCCEј0ъx§ў%ќєєї§љ@ў™єєєїўўTєєїќ-§ўUNERRORCMETHODNLINETHISPARENT LOGSESSIONOLEMSESSSIGNOFFщЎїїїїїў5їў%ќCC&Ё§љiў9†ќCй*No table is open in the current work area.ј0ъx§ўBўљтў%ќCєєі §љŠўBўў%ќєєї §љоўTєєє ї ќєєє ї §ў†ќCъї ъ§ў Tїќј§ў„їќј§(ќCыї јЭ§љ6ў%ќCCїјі >јї§љ2ўTїќCCїјі >ј§ўў…ў™єєє їў Tїќй§ў„їќј§(ќCыї јЭ§љMўTїќCCCїјі f›§ў&TїќїCїй: їєєі§ў!if !isnull(&lvFieldValue)љ,ў Hљсљ(ўB ќCїјі йNёCїјі йB ёCїјі йF §љjўGlcMessageText = lcMessageText + alltrim(str(&lvFieldValue))+chr(13)  ќCїјі йY§љвўNlcMessageText = lcMessageText+"$"+alltrim(str(&lvFieldValue,10,2))+chr(13) . ќCїјі йCёCїјі йM §љ@ў@lcMessageText=lcMessageText + alltrim(&lvFieldValue)+chr(13)  ќCїјі йG§љЖў\TїќїйEGeneral fields are not supported in this example and will be skipped.Cј §ў ќCїјі йD§љўGlcMessageText=lcMessageText + alltrim(DTOC(&lvFieldValue))+chr(13)  ќCїјі йT§љyўHlcMessageText = lcMessageText + alltrim(TTOC(&lvFieldValue))+chr(13)  ќCїјі йL§љюўif &lvFieldValueљЦўTїќїйTRUECј §ўљъўTїќїйFALSECј §ўў2љ(ў2TїќїйField could not be printed.Cј §ўўљIўTїќїйNULL§ўў…ўTєєє їќї§ў:Tєєє їќCCC&›єєій: йRecord #CCCOZ›§ў™ќCјєєє і§ў%ќєєї §љкў™єєє їўўўўUJ LNMAXLENGTHI LCMESSAGETEXT LVFIELDVALUEARRAYTHISPARENTSIGNON LOGSESSIONOLEMMESS SESSIONIDOLEMSESS PADBFIELDSCOMPOSEADDTABS MSGNOTETEXT MSGSUBJECT STRIPPATHSENDSIGNOFFError,џџClickЭџџ1ёс1A3€qsэ‘AQAA1ёугбёБAAбб‘aб!qЁссЁСЁqЁЁБСA!AQAAaЁa1AAA2ЎЪS )‚™ќCјєєє і§ў%ќєє^PROCEDURE Error LPARAMETERS nError, cMethod, nLine =messageb(message(),48) IF this.parent.logsession this.parent.OLEMSess.signoff ENDIF this.parent.logsession = .F. ENDPROC PROCEDURE Click *:********************************************************************* *: *: Class file: \samples\ole\mapibtn.vcx *: *: System: OLE *: Author: Microsoft Corporation *: Created: 01/04/95 *: Last modified: 04/13/95 *: *: *:********************************************************************* * This is sample class which demonstrates how to use the MAPI controls. * * It starts a new Mail session, collects data from the current record, * and brings up the Send Mail dialog with the data inserted as the * message text. * * To use this example, add this class to a form. You will need to open a * table before pressing the Send Mail button. This will work with any * Visual FoxPro table. * * This class includes two custom methods addtabs and strippath for * formatting the information gathered from the table and inserted in the * mail message. * * This class also takes advantage of another custom method called "signon" * as well as a custom property called logsession. This method and property * are necessary for proper error handling of the MAPI server (i.e. MSMail, * Exchange, etc.) * * This class also uses the smmail.bmp and next.bmp as the icons of the button * controls. * * In order for this button to function properly MSMAPI32.OCX must be * correctly registered in the registration database and a mail * application supported by the MAPI controls must be installed. The * MAPI controls do not work with Windows for Workgroups or Windows 3.1. * *********************************************************************** local j, lnMaxLength, i, lcMessageText, lvFieldValue ** j & i are counters private array paDBFields *** Localizable Strings #DEFINE DBF_NOT_FOUND_LOC "No table is open in the current work area." #DEFINE GEN_UNSUPPORT_LOC "General fields are not supported in this example and will be skipped." #DEFINE _FALSE_LOC "FALSE" #DEFINE _TRUE_LOC "TRUE" #DEFINE _NULL_LOC "NULL" #DEFINE _DOLLARSIGN_LOC "$" #DEFINE FLD_NO_PRINT_LOC "Field could not be printed." #DEFINE RECORDNUM_LOC "Record #" * Verify that a table is open in the current work area if empty(dbf()) =messagebox(DBF_NOT_FOUND_LOC,48) return else IF !this.parent.signon() && Use the custom method RETURN ENDIF IF this.parent.LogSession && Check if the user was able to login this.parent.OleMMess.sessionid=this.parent.OleMSess.sessionid * Get the number of fields in the current table =afields(paDBFields) **** find the longest field string for approximate formatting purposes lnMaxLength = 0 for j = 1 to alen(paDBFields,1) if len(paDBFields(j,1))+2 > lnMaxLength lnMaxLength = len(paDBFields(j,1))+2 endif endfor * Start a new mail message and build the text this.parent.OleMMess.compose lcMessageText="" for i = 1 to alen(paDBFields,1) lvFieldValue=alltrim(upper(paDBFields(i,1))) lcMessageText=lcMessageText+this.parent.addtabs((lvFieldValue+": "),lnMaxLength) if !isnull(&lvFieldValue) do case case paDBFields(i,2)= "N" or paDBFields(i,2)= "B" or paDBFields(i,2)= "F" lcMessageText = lcMessageText + alltrim(str(&lvFieldValue))+chr(13) case paDBFields(i,2) = "Y" lcMessageText = lcMessageText+_DOLLARSIGN_LOC+alltrim(str(&lvFieldValue,10,2))+chr(13) case paDBFields(i,2)= "C" or paDBFields(i,2) = "M" lcMessageText=lcMessageText + alltrim(&lvFieldValue)+chr(13) case paDBFields(i,2)= "G" lcMessageText=lcMessageText+GEN_UNSUPPORT_LOC+chr(13) case paDBFields(i,2) = "D" lcMessageText=lcMessageText + alltrim(DTOC(&lvFieldValue))+chr(13) case paDBFields(i,2) = "T" lcMessageText = lcMessageText + alltrim(TTOC(&lvFieldValue))+chr(13) case paDBFields(i,2) = "L" if &lvFieldValue lcMessageText = lcMessageText+_TRUE_LOC+chr(13) else lcMessageText = lcMessageText+_FALSE_LOC+chr(13) endif otherwise lcMessageText = lcMessageText+FLD_NO_PRINT_LOC+chr(13) endcase else lcMessageText=lcMessageText+_NULL_LOC endif endfor this.parent.OleMMess.msgnotetext=lcMessageText this.parent.OleMMess.msgsubject=this.parent.strippath(alltrim(dbf()))+": "+RECORDNUM_LOC+alltrim(str(recno())) this.parent.OleMMess.send(1) IF this.parent.logsession this.parent.OleMSess.signoff ENDIF && Session Handle test ENDIF && Login Test endif && DBF Test ENDPROC 8џs`шmЈыџƒФ ‹Кйj‹K`шЅўђџ ŒŒ‡%D{ќU6#%ќCћ_VFP.ActiveFormbћO§љ/ў ™сCєїўўU ACTIVEFORMREFRESHPЎїїїў %ќC+§љ7ў™ќCйEnabled-єі§ўBўў TїќCO§ў#)ў TїќCO§ў#6ў TїќCO§ў #ќї§ў HљљIў ќїї§љдўTєєїќ-§ўTєєїќ-§ўTєєїќa§ўTєє їќa§ў ќїї§љ)ўTєєїќa§ўTєєїќa§ўTєєїќ-§ўTєє їќ-§ў2љIў™ќCйEnabledaєі§ўўU NRECNTOPNBOTTOMTHISSETALLCMDTOPENABLEDCMDPRIORCMDNEXT CMDBOTTOM'%ќCєїЁ §љ ў Fќєї§ўўUTHIS SKIPTABLEз4їїїў Hљљаў ќїј §љЂў)TїќCћDBFй Select Table:йOpenС§ў%ќCї0§љ†ўFљў Qќї§ўTєїќC§ўљžўTєїќй§ўў ќїљ1§љўTїќCєєі§ў%ќїј§љў*R,ќй Unable to resolve data conflict.§ўў2љаўfTї ќйError Number: CCїZ›Cј Cј йError Message: CECј Cј й Procedure: Cјt§ўTї ќCї љ2ъx§ў Hљ–љЬў ќї ј§љЋў ў ќї ј§љРўXў2љЬўBўўўU NERRORCMETHODNLINE CNEWTABLETHIS SKIPTABLENCONFLICTSTATUS DATACHECKER1CHECKCONFLICTSLCMSGLNANSWER!%ќєї§љў ™єїўўUTHISENABLEDISABLEONINITENABLEDISABLEBUTTONSrecordpointermoved,џџenabledisablebuttons{џџbeforerecordpointermoved!џџError]џџInitЌџџ11СA3ёСAAТQСQС‘вA21бA3ёк–ёЁёA!DЁAfAбAAAAA3ЁA1aŒЖх!$#=р *@ћ 9 _)Œ DPROCEDURE recordpointermoved IF TYPE('_VFP.ActiveForm') = 'O' _VFP.ActiveForm.Refresh ENDIF ENDPROC PROCEDURE enabledisablebuttons LOCAL nRec, nTop, nBottom IF EOF() && Table empty or no records match a filter THIS.SetAll("Enabled", .F.) RETURN ENDIF nRec = RECNO() GO TOP nTop = RECNO() GO BOTTOM nBottom = RECNO() GO nRec DO CASE CASE nRec = nTop THIS.cmdTop.Enabled = .F. THIS.cmdPrior.Enabled = .F. THIS.cmdNext.Enabled = .T. THIS.cmdBottom.Enabled = .T. CASE nRec = nBottom THIS.cmdTop.Enabled = .T. THIS.cmdPrior.Enabled = .T. THIS.cmdNext.Enabled = .F. THIS.cmdBottom.Enabled = .F. OTHERWISE THIS.SetAll("Enabled", .T.) ENDCASE ENDPROC PROCEDURE beforerecordpointermoved IF !EMPTY(This.SkipTable) SELECT (This.SkipTable) ENDIF ENDPROC PROCEDURE Error Parameters nError, cMethod, nLine #define NUM_LOC "Error Number: " #define PROG_LOC "Procedure: " #define MSG_LOC "Error Message: " #define CR_LOC CHR(13) #define SELTABLE_LOC "Select Table:" #define OPEN_LOC "Open" #define SAVE_LOC "Do you want to save your changes anyway?" #define CONFLICT_LOC "Unable to resolve data conflict." DO CASE CASE nError = 13 && Alias not found *----------------------------------------------------------- * If the user tries to move the record pointer when no * table is open or when an invalid SkipTable property has been * specified, prompt the user for a table to open. *----------------------------------------------------------- cNewTable = GETFILE('DBF', SELTABLE_LOC, OPEN_LOC) IF FILE(cNewTable) SELECT 0 USE (cNewTable) This.SkipTable = ALIAS() ELSE This.SkipTable = "" ENDIF CASE nError = 1585 *----------------------------------------------------------- * Update conflict handled by datachecker class. *----------------------------------------------------------- nConflictStatus = THIS.DataChecker1.CheckConflicts() IF nConflictStatus = 2 WAIT WINDOW CONFLICT_LOC ENDIF OTHERWISE *----------------------------------------------------------- * Display information about an unanticipated error. *----------------------------------------------------------- lcMsg = NUM_LOC + ALLTRIM(STR(nError)) + CR_LOC + CR_LOC + ; MSG_LOC + MESSAGE( )+ CR_LOC + CR_LOC + ; PROG_LOC + PROGRAM(1) lnAnswer = MESSAGEBOX(lcMsg, 2+48+512) DO CASE CASE lnAnswer = 3 &&Abort CANCEL CASE lnAnswer = 4 &&Retry RETRY OTHERWISE RETURN ENDCASE ENDCASE ENDPROC PROCEDURE Init IF THIS.EnableDisableOnInit THIS.EnableDisableButtons ENDIF ENDPROC ЫPROCEDURE addtabs parameters tcString, tnMaxLength #DEFINE TABSPACES 8 && Number of characters that will equal 1 TAB local i, lnAdd, lnMaxTabs lnMaxTabs=int(tnMaxLength/TABSPACES)+1 lnAdd = lnMaxTabs - INT(len(tcString)/TABSPACES) for i = 1 to lnAdd tcString = tcString + chr(9) endfor return tcString ENDPROC PROCEDURE strippath parameters tcString IF RAT( "\", tcString) > 0 tcString = SUBSTR( tcString, RAT( "\", tcString) + 1 ) ENDIF return tcString ENDPROC PROCEDURE signon #DEFINE ERR_NOMAPI_LOC "It does not appear that you have MAPI installed. Mail could not be run." this.logsession = .T. IF !FILE(GETENV("WINDIR")+"\SYSTEM32\MAPI32.DLL"); AND !FILE(GETENV("WINDIR")+"\SYSTEM\MAPI32.DLL") MESSAGEBOX(ERR_NOMAPI_LOC) RETURN .F. ENDIF this.OLEMSess.signon ENDPROC PROCEDURE Error LPARAMETERS nError, cMethod, nLine =messageb(message(),48) this.logsession = .F. ENDPROC PROCEDURE Init this.logsession = .F. ENDPROC le = enabledisableoninit = .T. Name = "vcr